﻿namespace Excerise;

public class Program
{
    public static void Main(string[] args)
    {
        // 十、基础类设计与对象创建
        // 学生信息类
        // 定义一个Student类，包含属性：姓名（Name）、年龄（Age）、学号（StudentID）。
        // 为该类添加一个方法ShowInfo()，用于显示学生的所有信息。
        // 创建几个Student对象，并调用ShowInfo()方法显示信息。、

        //有参构造
        var s1 = new Student("张三", 18, 1001);
        //无参构造
        var s2 = new Student
        {
            Name = "李四",
            Age = 28,
            StudentID = 1002
        };
        var s3 = new Student();
        s3.Name = "王五";
        s3.Age = 38;
        s3.StudentID = 1004;

        System.Console.WriteLine(s1.ShowInfo());
        System.Console.WriteLine(s2.ShowInfo());
        System.Console.WriteLine(s3.ShowInfo());

        // 图书类
        // 创建一个Book类，包含属性：书名（Title）、作者（Author）、价格（Price）。
        // 添加一个方法DisplayBookDetails()，用于显示图书的详细信息。
        // 在主程序中创建几个Book对象，并调用DisplayBookDetails()方法。
        var b1 = new Book("红楼梦", "曹雪芹", 99.99);
        var b2 = new Book("三国演义", "罗贯中", 88.88);

        System.Console.WriteLine(b1.DisplayBookDetails());
        System.Console.WriteLine(b2.DisplayBookDetails());

        //         构造函数与初始化
        // 员工类
        // 定义一个Employee类，包含属性：员工姓名（Name）、员工编号（EmployeeID）、入职日期（HireDate）。
        // 为该类添加一个构造函数，用于初始化员工的姓名和编号，入职日期默认为当前日期。
        // 创建几个Employee对象，并打印出每个员工的信息。
        var e1 = new Employee("张三", 1001);
        var e2 = new Employee("李四", 1002);
        var e3 = new Employee("王五", 1003);

        System.Console.WriteLine($"员工姓名:{e1.Name},员工编号:{e1.EmployeeID},入职日期:{e1.HireDate}");
        System.Console.WriteLine($"员工姓名:{e2.Name},员工编号:{e2.EmployeeID},入职日期:{e2.HireDate}");
        System.Console.WriteLine($"员工姓名:{e3.Name},员工编号:{e3.EmployeeID},入职日期:{e3.HireDate}");

        // 汽车类
        // 创建一个Car类，包含属性：品牌（Brand）、颜色（Color）、速度（Speed）。
        // 添加一个构造函数，用于初始化品牌和颜色，速度默认为0。
        // 添加一个方法Accelerate(int increment)，用于增加汽车的速度。
        // 创建一个Car对象，调用Accelerate()方法增加速度，并打印出汽车的当前速度。
        var car = new Car("迈巴赫S680", "文石银/碳灰蓝");
        System.Console.WriteLine($"品牌:{car.Brand},颜色:{car.Color},速度:{car.Speed} km/h");
        car.Accelerate(130);
        System.Console.WriteLine("加速后");
        System.Console.WriteLine($"品牌:{car.Brand},颜色:{car.Color},速度:{car.Speed} km/h");
    }
}
